It is commonly required to embed one or more objects in a first web document, so that when the first document is downloaded, the embedded objects are downloaded and the ensemble is displayed in a content browser. Such embedded objects may be images encoded in gif, jpeg or other formats, style sheets describing fonts, colors and other layout information, or script files containing browser executables. For example, a news page might contain news images, advertising images, as well user-interface graphics interspersed with text. The text is delivered in the master HTML document, which also carries embedded URL references to the images that are to be included in displaying the document. When the user visits the web page, the browser first downloads the master HTML document, then downloads the embedded images via the URL references, and finally displays the ensemble.
In order to improve performance, browsers typically have caches that store web objects for later use. In particular, although the master HTML document for the news page may be downloaded at each visit to include the latest updates, embedded objects that are already in the browser's cache may be reused, thereby improving network performance. However, when content on the web site changes, such cached objects may cease to be current. In order to maintain currency of cached objects, browsers may validate cached objects with the web server prior to reuse, substituting a validation request in place of the request for the entire object. If the object is unmodified, the server responds with “not modified, use local copy”— saving the browser the inefficiency and delay associated with downloading the entire object. However, when a web page has a large number of such embedded objects, the time required to validate the cached copies of the embedded objects is significant, substantially degrading performance.
In the prior art, individual authors of web documents sometimes eliminate (or, at least, postpone) the validation step by setting long expiry dates on embedded objects. For example, FIG. 1 shows the image http://us.yimg.com/i/ww/m5v5.gif, which constitutes the “Yahoo” logo on the Yahoo home page (http://www.yahoo.com) as of May 25, 2001. FIG. 2 shows the header information carried by the image as presented by the Netscape browser. In particular, the header designates an effective lifetime for the logo of over eight years:                Last-modified date: Fri, 15 Apr 1994 12:00:00 GMT        Expires: Wednesday, May 08, 2002 3:00:00 PM        
A second version of the logo is http://us.yimg.com/i/ww/m5v4.gif shown in FIG. 3. FIG. 4 shows the header information carried by this image as presented by the Netscape browser. Second image m5v4.gif also carries the same last-modified date and expiry date as first image m5v5.gif. In a document using the second logo rather than the first, it is necessary to replace every reference to the first URL with a reference to the second URL. Furthermore, when creating other (e.g., third, etc.) versions of the image, it is necessary to keep track of all names that were previously assigned. All of the foregoing requires access to the content as it exists at the content server, so that it is not possible to readily take advantage of long expiry dates where one does not control the content server.
Finally, even when one controls the content server, certain types of images cannot be given extended expiry dates because one does not control the content itself. For example, FIG. 5 shows an image, from a wire service news story, having the URL http://us.news1.yimg.com/us.yimg.com/p/nm/20010526/compromise_taxplan_graphic_thu mb.gif. As shown in FIG. 6, the header information for the image does not have an expiry date or last-modified date specified, because the image was not provided with such information by the content provider. Thus, this image must be requested in full for each use.
Also in the prior art, U.S. Pat. No. 6,108,703 to Leighton teaches distributing copies of frequently-requested embedded objects to a network of proprietary hosting servers. In the Leighton system, objects embedded within a document are served from hosting servers distinct from the content server on which the document itself is served. Preferably, there is a network of hundreds of such hosting servers, with the needed objects being hosted on some, but not all, of the hosting servers. When a user needs an embedded object, one particular hosting server is selected to serve that object to the user depending on the user's actual network location as determined by a DNS server. The Leighton patent is directed toward techniques for randomly distributing the embedded objects over a set of virtual server hostnames in a load balanced manner. However, Leighton does not in any way recognize the problem of bandwidth-consuming validation requests from the browser at each use of an object in the browser's cache, much less the desirability of (or techniques for) reducing or eliminating such validation requests.